# -*- coding: utf-8 -*-            
# @Author : HJH
# @Time : 2024/4/1 9:21
# @Use :
import hashlib

import pandas as pd


def generate_group_key(ggk_item):
    # 定义一个函数来生成组合键
    # 假设你想根据 'field1' 和 'field2' 两个字段进行分组
    key_str = ggk_item['出发'] + ggk_item['到达'] + ggk_item['旅行日期'] + ggk_item['航班号']
    hash_object = hashlib.md5()
    hash_object.update(key_str.encode())
    return hash_object.hexdigest()


if __name__ == '__main__':
    in_file_name = input("输入需要匹配文件名(.xlsx格式): ")
    print("读取文件数据... ...")
    pd_data = pd.read_excel(f'./{in_file_name}.xlsx', sheet_name="数据记录-4")
    # 将每一行转为字典，并存储在一个列表中
    data_dict_list = pd_data.to_dict(orient='records')

    grouped_data = {}
    for item in data_dict_list:
        key = generate_group_key(item)
        if key not in grouped_data:
            grouped_data[key] = []
        grouped_data[key].append(item)

    res_data = []
    for items in grouped_data.values():
        r_price = min(items, key=lambda price: price['票面价'])
        res_data.append(r_price)

    # 将列表转换为 DataFrame
    df = pd.DataFrame(res_data)

    # # 设置表头
    # header = ['航班号', '出发日期', '']

    print("开始写入文件... ...")
    # 将数据写入 Excel 文件并设置表头
    with pd.ExcelWriter(f'./{in_file_name}-低价.xlsx', engine='xlsxwriter') as writer:
        df.to_excel(writer, index=False, )

    # 输出成功提示
    print("Excel 文件写入成功！")
